package routers

import (
	"MyBlogs/logic"
	"MyBlogs/tools"
	"github.com/gin-gonic/gin"
)

func New() {
	g := gin.Default()
	g.LoadHTMLGlob("static/html/*")
	g.Static("static", "static")

	// 设置 CORS
	g.Use(func(c *gin.Context) {
		c.Writer.Header().Set("Access-Control-Allow-Origin", "*") // 允许所有来源访问
		c.Writer.Header().Set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
		c.Next()
	})

	g.GET("/ws", logic.WebSocketHandler) // 建立 WebSocket路由
	g.GET("/chats", logic.AllChats)      // 聊天室所有的聊天记录

	admin := g.Group("")

	//  程序主页 -- 用户 的 主页
	{
		g.GET("/index", logic.LoadIndex)         // 加载主页面
		g.GET("/articles", logic.GetArticles)    // 加载主页数据
		g.GET("/article", logic.LoadOneArticle)  // 加载某一个文章的页面
		g.GET("/article_data", logic.GetArticle) // 加载某个文章数据

		g.GET("/gpt_chat", logic.LoadChatGpt)   // 加载 gpt页面
		g.GET("/chat_room", logic.LoadChatRoom) // 加载聊天室页面

		g.GET("/isLogin", logic.IsLogin) // 判断 用户 此时 是否登录
		g.GET("/logout", logic.LogOut)   // 用户 退出登录

		g.POST("/advice/add", logic.AdviceAdd) // 用户 提交意见

	}

	// 登录 和 注册
	{
		// 登录 ---
		g.GET("/login", logic.LoadLogin) // 加载登录页面
		g.POST("/login", logic.GetUser)  // 比对 登录 数据

		// 注册 ---
		g.GET("register", logic.LoadRegister)       //注册页面
		g.POST("/register_ajax", logic.FindOneUser) // 判断 用户名重复问题
		g.POST("/register", logic.AddUser)          // 注册账号成功后，进行添加
	}

	//admin.Use(middlewares.CheckAdmin)
	//  文章管理
	{
		admin.GET("/myblogs", logic.LoadMyblogs)
		admin.GET("/myblogs/add", logic.LoadMyblogs_Add)   //  发布文章页面
		admin.POST("/myblogs/add", logic.AddArticle)       // 数据传送
		admin.POST("/myblogs/del", logic.DelArticle)       // 数据删除
		admin.GET("/myblogs/update", logic.LoadUpdArticle) // 加载 修改页面
		admin.POST("/myblogs/update", logic.ModArticle)    // 修改数据
		admin.POST("/myblogs/find", logic.FindArticle)     // 查询数据
	}

	//  评论管理
	{
		g.POST("/remark/add", logic.SetRemark)     // 用户评论
		g.POST("/remark/find", logic.GetRemark)    //  查询 某个文章下面 所有的评论
		admin.POST("/remark/All", logic.AllRemark) // 查询所有的 评论
		admin.GET("/remark", logic.LoadRemark)     // 加载评论管理页面
		admin.POST("/remark/del", logic.DelRemark) // 删除评论

		g.GET("/remark/rep", logic.ReplyRemark)     // 回复评论  判断是否 可以评论  // 用户页面点击 回复按钮
		g.POST("/remark/rep", logic.AddReplyRemark) // 将评论内容 添加到 数据库 // 用户的评论
	}

	//  用户管理
	{
		admin.GET("/user", logic.LoadUser)
		admin.POST("/user/all", logic.FindAllUser)
		admin.GET("/user/state", logic.StateUser)
	}

	//  管理员登录
	{
		g.GET("/admin/login", logic.LoadAdminLogin)
		g.POST("/admin/login", logic.GetAdmin)
	}

	// 用户 打赏
	{
		g.GET("/Alipay", tools.Alipay)

	}

	g.Run(":8080")
}
